package br.com.cjweb.util.teste;

import java.util.ArrayList;
import java.util.List;

public class TesteMetodo
{
	
	public static void main(String[] args)
	{	
		/*PessoaFisica marcelo = new PessoaFisica();
		PessoaJuridica univag = new PessoaJuridica();
		PessoaFisica lucas = new PessoaFisica();
		PessoaFisica germano = new PessoaFisica();
		
		marcelo.setNome("Marcelo");
		marcelo.setSobrenome("Campaner");
		marcelo.calculaSaldoComJuros(1000.55);
		
		univag.setNome("Univag");
		univag.setSobrenome("Centro Universitario");
		univag.calculaSaldoComJuros(105000.58);
		
		
		lucas.setNome("Lucas");
		lucas.setSobrenome("Holanda");
		lucas.calculaSaldoComJuros(3500);
		
		germano.setNome("Germano");
		germano.setSobrenome("Manente Neto");
		germano.calculaSaldoComJuros(4500);
		
		List<ICliente> clientes = new ArrayList<ICliente>();
		
		clientes.add(marcelo);
		clientes.add(univag);
		clientes.add(lucas);
		clientes.add(germano);
		
		
		
		
		
		
		
		for (int i = 0; i < clientes.size(); i++)
		{
			if (clientes.get(i) instanceof PessoaFisica)
				System.out.println("Saldo Pessoa Fisica " + ((PessoaFisica)clientes.get(i)).getNome() + " é de: " + ((PessoaFisica)clientes.get(i)).getSaldoConta());
			
			if (clientes.get(i) instanceof PessoaJuridica)
				System.out.println("Saldo Pessoa Juridica " + ((PessoaJuridica)clientes.get(i)).getNome() + " é de: " + ((PessoaJuridica)clientes.get(i)).getSaldoConta());
		}
		
		
		List<IFuncionario> funcionarios = new ArrayList<IFuncionario>();
		
		lucas.calculaSaldoContaDesconto(3500);
		germano.calculaSaldoContaDesconto(4500);
		
		funcionarios.add(lucas);
		funcionarios.add(germano);
		
		for (int i = 0; i < funcionarios.size(); i++)
		{
			if (funcionarios.get(i) instanceof PessoaFisica)
				System.out.println("Saldo funcionario " + ((PessoaFisica)funcionarios.get(i)).getNome() + " é de: " + ((PessoaFisica)funcionarios.get(i)).getSaldoConta());
		}*/
		
		/*long numero = 21474836488888L;
		
		System.out.println(numero);*/
		
		String teste5 = "Germano Bicha loca loca";
		
	}

}

interface ICliente
{
	public void calculaSaldoComJuros(double saldo);
}

interface IFuncionario
{
	public void calculaSaldoContaDesconto(double saldo);
}

abstract class Pessoa
{
	private String nome;
	private String sobrenome;
	private double saldoConta;
	
	public Pessoa()
	{
		
	}

	public String getNome()
	{
		return nome;
	}


	public void setNome(String nome)
	{
		this.nome = nome;
	}


	public String getSobrenome()
	{
		return sobrenome;
	}


	public void setSobrenome(String sobrenome)
	{
		this.sobrenome = sobrenome;
	}

	public double getSaldoConta()
	{
		return saldoConta;
	}

	protected void setSaldoConta(double saldoConta)
	{
		this.saldoConta = saldoConta;
	}
}

class PessoaFisica extends Pessoa implements ICliente, IFuncionario
{
	private String cpf;

	public String getCpf()
	{
		return cpf;
	}

	public void setCpf(String cpf)
	{
		this.cpf = cpf;
	}

	@Override
	public void calculaSaldoComJuros(double saldo)
	{	
		double saldoNovo = saldo * 1.5;
		super.setSaldoConta(saldoNovo);
	}

	@Override
	public void calculaSaldoContaDesconto(double saldo)
	{
		double saldoNovo = saldo - (saldo * 1.0 / 100);
		super.setSaldoConta(saldoNovo);
	}
}

class PessoaJuridica extends Pessoa implements ICliente
{
	private String cnpj;

	public String getCnpj()
	{
		return cnpj;
	}

	public void setCnpj(String cnpj)
	{
		this.cnpj = cnpj;
	}

	@Override
	public void calculaSaldoComJuros(double saldo)
	{
		double saldoNovo = saldo * 2.9;
		super.setSaldoConta(saldoNovo);
	}
}